package controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.entidades.Mensagem;
import com.ts.TimerServiceBeanRemote;

@ManagedBean(name = "timerService")
@SessionScoped
public class TimerServiceController implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private InitialContext ctx;
	private TimerServiceBeanRemote timerServiceBean;

	private String inputId, inputDia, inputMes, inputAno, inputHora, inputMinuto, inputNome, inputMensagem;
	private int inputId1, inputDia1, inputMes1, inputAno1, inputHora1, inputMinuto1;
	private Mensagem selecionado;
	private List<Mensagem> messagenSelecionadas;
	private List<Mensagem> listaTimer;

	public TimerServiceController() throws NamingException {
		ctx = new InitialContext();
		timerServiceBean = (TimerServiceBeanRemote) ctx.lookup("TimerServiceRemote");
	}

	public String getItemSelecionados() {
		for (Mensagem msg : getListaTimers()) {
			if (msg.isSelecionado()) {
				if (!getMessagenSelecionadas().contains(msg)) {
					getMessagenSelecionadas().add(msg);
				}
			} else {
				if ((!(getMessagenSelecionadas() == null)) && (!(getMessagenSelecionadas().isEmpty()))) {
					getMessagenSelecionadas().remove(msg);
				}
			}
		}
		return "mensagem";
	}

	public String cadastra() {
		inputId1 = Integer.parseInt(inputId);
		inputAno1 = Integer.parseInt(inputAno);
		inputMes1 = Integer.parseInt(inputMes);
		inputDia1 = Integer.parseInt(inputDia);
		inputHora1 = Integer.parseInt(inputHora);
		inputMinuto1 = Integer.parseInt(inputMinuto);

		Calendar c = Calendar.getInstance();

		c.set(inputAno1, inputMes1 - 1, inputDia1, inputHora1, inputMinuto1, 00);
		Mensagem m = new Mensagem(inputId1, getInputNome(), getInputMensagem(), c.getTime());

		timerServiceBean.processamento(m, c);
		setListaTimers(timerServiceBean.listaTimer());
		limparCampos();
		FacesMessage msg = new FacesMessage("Evento Cadastrado com sucesso.");
		FacesContext fc = FacesContext.getCurrentInstance();
		fc.addMessage("sucesso", msg);
		return "mensagem";

	}

	public String exclui() {
		getItemSelecionados();

		// //

		for (Mensagem m : getMessagenSelecionadas()) {
			timerServiceBean.removeTimer(m.getId());
		}
		setListaTimers(timerServiceBean.listaTimer());
		setMessagenSelecionadas(new ArrayList<Mensagem>());
		FacesMessage msg = new FacesMessage("Evento excluidos com sucesso.");
		FacesContext fc = FacesContext.getCurrentInstance();
		fc.addMessage("sucesso", msg);
		return "mensagem";
	}

	// -------------------------------------------------//
	public void limparCampos() {
		setInputAno("");
		setInputDia("");
		setInputId("");
		setInputMes("");
		setInputHora("");
		setInputMinuto("");
		setInputNome("");
		setInputMensagem("");
	}

	public List<Mensagem> getMessagenSelecionadas() {
		if (messagenSelecionadas == null) {
			messagenSelecionadas = new ArrayList<Mensagem>();
		}
		return messagenSelecionadas;
	}

	public void setMessagenSelecionadas(List<Mensagem> messagenSelecionadas) {
		this.messagenSelecionadas = messagenSelecionadas;
	}

	public List<Mensagem> getListaTimers() {
		if (listaTimer == null) {
			listaTimer = timerServiceBean.listaTimer();
		}
		return listaTimer;
	}

	public void setListaTimers(List<Mensagem> listaTimer) {
		this.listaTimer = listaTimer;
	}

	public String getInputMensagem() {
		return inputMensagem;
	}

	public void setInputMensagem(String inputMensagem) {
		this.inputMensagem = inputMensagem;
	}

	public String getInputNome() {
		return inputNome;
	}

	public void setInputNome(String inputNome) {
		this.inputNome = inputNome;
	}

	public Mensagem getSelecionado() {
		return selecionado;
	}

	public void setSelecionado(Mensagem selecionado) {
		this.selecionado = selecionado;
	}

	public String getInputId() {
		return inputId;
	}

	public void setInputId(String inputId) {
		this.inputId = inputId;
	}

	public String getInputDia() {
		return inputDia;
	}

	public void setInputDia(String inputDia) {
		this.inputDia = inputDia;
	}

	public String getInputMes() {
		return inputMes;
	}

	public void setInputMes(String inputMes) {
		this.inputMes = inputMes;
	}

	public String getInputAno() {
		return inputAno;
	}

	public void setInputAno(String inputAno) {
		this.inputAno = inputAno;
	}

	public String getInputHora() {
		return inputHora;
	}

	public void setInputHora(String inputHora) {
		this.inputHora = inputHora;
	}

	public String getInputMinuto() {
		return inputMinuto;
	}

	public void setInputMinuto(String inputMinuto) {
		this.inputMinuto = inputMinuto;
	}

}